package models

import (
	"time"

	"github.com/mlogclub/simple/sqls"
)

// 首页标签
type IndexCategory struct {
	ModelBase
	Name   string `gorm:"size:32;not null" json:"name" form:"name"`
	Sort   int    `gorm:"type:int(11); default 0; not null" json:"sort" form:"sort"`
	Status int    `gorm:"type:int(11); not null" json:"status" form:"status"`
}

func (IndexCategory) TableName() string {
	return "index_category"
}

// 首页文章
type IndexArticle struct {
	ModelBase
	IndexCategoryId int64  `gorm:"default:0;" json:"indexCategoryId" form:"indexCategoryId"`        // 分类ID
	UserId          int64  `gorm:"default:0;" json:"userId" form:"userId"`                          // 所属用户编号
	Title           string `gorm:"size:128;not null;" json:"title" form:"title"`                    // 标题
	Summary         string `gorm:"type:text" json:"summary" form:"summary"`                         // 摘要
	ContentType     string `gorm:"type:varchar(32);not null" json:"contentType" form:"contentType"` // 内容类型：markdown、html
	Content         string `gorm:"type:longtext;not null;" json:"content" form:"content"`           // 内容
	Cover           string `gorm:"type:text;" json:"cover" form:"cover"`                            // 封面图
	Sort            int    `gorm:"type:int(11)" json:"sort" form:"sort"`                            // 排序
	Status          int    `gorm:"type:int(11)" json:"status" form:"status"`                        // 状态
	Source          string `gorm:"type:varchar(255)" json:"source" form:"source"`                   // 文章来源
	SourceUrl       string `gorm:"type:text" json:"sourceUrl" form:"sourceUrl"`                     // 原文链接
	ViewCount       int64  `gorm:"not null;" json:"viewCount" form:"viewCount"`                     // 查看数量
	LikeCount       int64  `gorm:"default:0" json:"likeCount" form:"likeCount"`                     // 点赞数量
	IndexShow       int    `gorm:"type:int(11); default:0" json:"indexShow" form:"indexShow"`       // 是否首页展示:0不显示，1显示
}

func (IndexArticle) TableName() string {
	return "index_article"
}

type ResourcesTypes struct {
	ModelBase
	Name        string `gorm:"size:32;not null" json:"name" form:"name"`
	Description string `gorm:"type:text" json:"description" form:"description"` // 描述
	Sort        int    `gorm:"type:int(11)" json:"sort" form:"sort"`            // 排序
}

func (ResourcesTypes) TableName() string {
	return "resources_types"
}

type Resources struct {
	ModelBase
	Name        string `gorm:"size:255;not null" json:"name" form:"name"`         // 资源封面
	Cover       string `gorm:"type:text;" json:"cover" form:"cover"`              // 封面图
	Description string `gorm:"type:text" json:"description" form:"description"`   // 描述
	Types       int    `gorm:"type:int(11)" json:"types" form:"types"`            // 资源类型
	FileName    string `gorm:"size:255;not null" json:"fileName" form:"fileName"` // 文件名
	FilePath    string `gorm:"size:500;not null" json:"filePath" form:"filePath"` // md5
	Sort        int    `gorm:"type:int(11)" json:"sort" form:"sort"`              // 排序
	Status      int    `gorm:"type:int(11)" json:"status" form:"status"`          // 状态
}

func (Resources) TableName() string {
	return "resources"
}

type IndexArticleSimpleRequest struct {
	Limit           int
	Page            int
	IndexCategoryId int
	IndexShow       int
}

type IndexArticleSimpleResponse struct {
	IndexCategoryName string                  `json:"indexCategoryName" form:"indexCategoryName"`
	List              []IndexArticleSimpleDto `json:"list" form:"list"`
	Paging            *sqls.Paging
}

type IndexArticleSimpleDto struct {
	Id              int64  `json:"id" form:"id"`
	CreatedAt       string `json:"createdAt" form:"createdAt"`
	IndexCategoryId int64  `gorm:"default:0;" json:"indexCategoryId" form:"indexCategoryId"`  // 分类ID
	Title           string `gorm:"size:128;not null;" json:"title" form:"title"`              // 标题
	Summary         string `gorm:"type:text" json:"summary" form:"summary"`                   // 摘要
	Cover           string `gorm:"type:text;" json:"cover" form:"cover"`                      // 封面图
	Sort            int    `gorm:"type:int(11)" json:"sort" form:"sort"`                      // 排序
	Source          string `gorm:"type:varchar(255)" json:"source" form:"source"`             // 文章来源
	SourceUrl       string `gorm:"type:varchar(255)" json:"sourceUrl" form:"sourceUrl"`       // 文章来源Url
	IndexShow       int    `gorm:"type:int(11); default:0" json:"indexShow" form:"indexShow"` // 是否首页展示:0不显示，1显示
}

// 首页文章
type IndexArticleSimple struct {
	Id              int64     `json:"id" form:"id"`
	CreatedAt       time.Time `json:"createdAt" form:"createdAt"`
	IndexCategoryId int64     `gorm:"default:0;" json:"indexCategoryId" form:"indexCategoryId"`  // 分类ID
	Title           string    `gorm:"size:128;not null;" json:"title" form:"title"`              // 标题
	Summary         string    `gorm:"type:text" json:"summary" form:"summary"`                   // 摘要
	Cover           string    `gorm:"type:text;" json:"cover" form:"cover"`                      // 封面图
	Sort            int       `gorm:"type:int(11)" json:"sort" form:"sort"`                      // 排序
	Source          string    `gorm:"type:varchar(255)" json:"source" form:"source"`             // 文章来源
	SourceUrl       string    `gorm:"type:varchar(255)" json:"sourceUrl" form:"sourceUrl"`       // 文章来源Url
	IndexShow       int       `gorm:"type:int(11); default:0" json:"indexShow" form:"indexShow"` // 是否首页展示:0不显示，1显示
}

type IndexContentResponse struct {
	IndexInfo1 IndexInfo               `json:"indexInfo1" form:"indexInfo1"` //
	IndexInfo2 IndexInfo               `json:"indexInfo2" form:"indexInfo2"` //
	IndexInfo3 IndexInfo               `json:"indexInfo3" form:"indexInfo3"` //
	IndexList1 []IndexArticleSimpleDto `json:"indexList1" form:"indexList1"` // 列表1
	IndexList2 []IndexArticleSimpleDto `json:"indexList2" form:"indexList2"` // 列表2
	IndexList3 []IndexArticleSimpleDto `json:"indexList3" form:"indexList3"` // 列表3
	IndexList4 []IndexVideoSimple      `json:"indexList4" form:"indexList4"` // 列表4 宣传视频
}

type IndexInfo struct {
	IndexTitle string                  `json:"indexTitle" form:"indexTitle"` // 首页标题
	IndexList  []IndexArticleSimpleDto `json:"indexList" form:"indexList"`   // 列表1
}

type IndexVideoSimple struct {
	Id    int64  `json:"id" form:"id"`
	Name  string `gorm:"size:255;not null" json:"name" form:"name"` // 名称
	Cover string `gorm:"type:text;" json:"cover" form:"cover"`      // 封面图
	Video string `gorm:"type:text;" json:"video" form:"video"`      // 视频地址
}

type IndexArticleInfo struct {
	Id                int64  `json:"id" form:"id"`
	CreatedAt         string `json:"createdAt" form:"createdAt"`                                      // 创建时间
	IndexCategoryId   int64  `gorm:"default:0;" json:"indexCategoryId" form:"indexCategoryId"`        // 分类ID
	IndexCategoryName string `json:"indexCategoryName" form:"indexCategoryName"`                      // 分类名称
	UserId            int64  `gorm:"default:0;" json:"userId" form:"userId"`                          // 所属用户编号
	Title             string `gorm:"size:128;not null;" json:"title" form:"title"`                    // 标题
	Summary           string `gorm:"type:text" json:"summary" form:"summary"`                         // 摘要
	ContentType       string `gorm:"type:varchar(32);not null" json:"contentType" form:"contentType"` // 内容类型：markdown、html
	Content           string `gorm:"type:longtext;not null;" json:"content" form:"content"`           // 内容
	Cover             string `gorm:"type:text;" json:"cover" form:"cover"`                            // 封面图
	Sort              int    `gorm:"type:int(11)" json:"sort" form:"sort"`                            // 排序
	Status            int    `gorm:"type:int(11)" json:"status" form:"status"`                        // 状态
	Source            string `gorm:"type:varchar(255)" json:"source" form:"source"`                   // 文章来源
	SourceUrl         string `gorm:"type:text" json:"sourceUrl" form:"sourceUrl"`                     // 原文链接
	ViewCount         int64  `gorm:"not null;" json:"viewCount" form:"viewCount"`                     // 查看数量
	LikeCount         int64  `gorm:"default:0" json:"likeCount" form:"likeCount"`                     // 点赞数量
	IndexShow         int    `gorm:"type:int(11); default:0" json:"indexShow" form:"indexShow"`       // 是否首页展示:0不显示，1显示
}

type ResourcesInfo struct {
	Id          int64  `json:"id" form:"id"`
	CreatedAt   string `json:"createdAt" form:"createdAt"` // 创建时间
	Name        string `gorm:"size:255;not null" json:"name" form:"name"`
	Description string `gorm:"type:text" json:"description" form:"description"`   // 描述
	Cover       string `json:"cover" form:"cover"`                                // 封面
	Types       int    `gorm:"type:int(11)" json:"types" form:"types"`            // 资源类型
	TypesName   string `json:"typesName" form:"typesName"`                        // 资源类型名称
	FileName    string `gorm:"size:255;not null" json:"fileName" form:"fileName"` // 文件名
	FilePath    string `gorm:"size:500;not null" json:"filePath" form:"filePath"` // md5
	Sort        int    `gorm:"type:int(11)" json:"sort" form:"sort"`              // 排序
	Status      int    `gorm:"type:int(11)" json:"status" form:"status"`          // 状态
}

type IndexContentV2Response struct {
	BBSUrl       string           `json:"bbsUrl" form:"bbsUrl"`             // 论坛地址
	NewsTrends   IndexInfo        `json:"newsTrends" form:"newsTrends"`     // 资讯动态
	SystemNotice SystemNoticeInfo `json:"systemNotice" form:"systemNotice"` // 系统通知
	BBSInfo      BBSInfo          `json:"bbsInfo" form:"bbsInfo"`           // 交流论坛
	// ExcitingTexture ExcitingTextureInfo `json:"excitingTextureInfo" form:"excitingTextureInfo"` // 精彩贴图
	ExcitingTexture IndexInfo `json:"excitingTextureInfo" form:"excitingTextureInfo"` // 精彩贴图
}

type BBSInfo struct {
	Title    string    `json:"title" form:"title"`       // 交流论坛
	BBSTypes []BBSType `json:"bbsTypes" form:"bbsTypes"` // 列表1
}

type BBSList struct {
	IndexTitle string                  `json:"indexTitle" form:"indexTitle"` // 交流论坛
	IndexList  []IndexArticleSimpleDto `json:"indexList" form:"indexList"`   // 列表1
}

type BBSType struct {
	Id   int    `json:"id" form:"id"`
	Name string `json:"name" form:"name"`
	Url  string `json:"url" form:"url"`
}

type SystemNoticeInfo struct {
	Title string            `json:"title" form:"title"` // 首页标题
	List  []SystemNoticeDto `json:"list" form:"list"`   // 系统通知
}

type SystemNoticeDto struct {
	Id        int64  `json:"id" form:"id"`
	CreatedAt string `json:"createdAt" form:"createdAt"`
	Title     string `gorm:"size:128;not null;" json:"title" form:"title"` // 标题
	Summary   string `gorm:"type:text" json:"summary" form:"summary"`      // 摘要
}

type ExcitingTextureInfo struct {
	Title string            `json:"title" form:"title"` // 精彩贴图
	List  []ExcitingTexture `json:"list" form:"list"`   // 精彩贴图
}

type ExcitingTexture struct {
	Name     string `json:"name" form:"name"`         // 图片名字
	ImageUrl string `json:"imageUrl" form:"imageUrl"` // 图片地址
}
